package top.lenjon.lib.service;

import com.github.pagehelper.PageInfo;
import top.lenjon.lib.entity.Book;
import top.lenjon.lib.entity.Log;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * <p>
 * 借阅记录 服务类
 * </p>
 *
 * @author wei
 * @since 2020-11-09
 */
public interface ILogService extends IService<Log> {

    PageInfo getLogByStatus(int staus, int pageNum, int pageSize);

    Log getLogById(int id);

    /**
     * @param borrowerId borrowerId
     * @return 关于borrowerId的所有记录
     */
    List<Log> getAllLogOf(int borrowerId);

    /**
     * @param borrowerId borrowerId
     * @return 关于borrowerId的书籍
     */
    List<Book> getAllBookOf(int borrowerId);

    /**
     * @param borrowerId borrowerId
     * @return 关于borrowerId的未归还记录
     */
    List<Log> getUnReturnLogOf(int borrowerId);

    /**
     * @param borrowerId borrowerId
     * @return 关于borrowerId的未归还书籍
     */
    List<Book> getUnReturnBookOf(int borrowerId);

    /**
     * @param borrowerId borrowerId
     * @return 关于borrowerId的已归还记录
     */
    List<Log> getReturnedLogOf(int borrowerId);

    /**
     * @param borrowerId borrowerId
     * @return 关于borrowerId的已归还书籍
     */
    List<Book> getReturnedBookOf(int borrowerId);

    /**
     * @param borrowerId borrowerId
     * @return 关于borrowerId的临期记录
     */
    List<Log> getLogShouldBeRenewOf(int borrowerId);

    /**
     * @param borrowerId borrowerId
     * @return 关于borrowerId的临期书籍
     */
    List<Book> getBookShouldBeRenewOf(int borrowerId);

    /**
     * @param borrowerId borrowerId
     * @return 关于borrowerId的过期记录
     */
    List<Log> getLogExpiredLogOf(int borrowerId);

    /**
     * @param borrowerId borrowerId
     * @return 关于borrowerId的过期书籍
     */
    List<Book> getLogExpiredBookOf(int borrowerId);

    /**
     * 续借
     *
     * @param bookId
     */
    void renew(int bookId);

    List<Log> getLogByUserId(Integer userId);

    void addLog(int bookId,int borrowerId);

}
